// Server.ts
import express from "express";
import cors from "cors";
import { scanMusicDirectory } from "./musicScanner.js";
import { parseKrcFile } from "./krcParser.js";
import path from "path";
import NodeID3 from "node-id3";
import fs from "fs"; // 修复：导入 fs 模块

// 定义歌曲类型
interface Song {
  id: string;
  title: string;
  artist: string;
  url: string;
  lyrics?: string; // 歌词内容（可选）
}

const app = express();
app.use(cors());

// 全局存储歌曲列表
let allSongs: Song[] = []; // 后续可优化为具体类型

app.use("/music", express.static("D:\\Software storage\\kugou"));

app.get("/api/songs", async (req, res) => {
  try {
    const songs = await scanMusicDirectory("D:\\Software storage\\kugou");
    const baseUrl = `${req.protocol}://${req.get("host")}`;
    const updatedSongs = songs.map((song) => ({
      ...song,
      url: `${baseUrl}/music/${encodeURIComponent(path.basename(song.url))}`,
    }));

    // 更新全局歌曲列表
    allSongs = updatedSongs;

    // 修改为RESTful格式
    res.json({
      code: 200,
      data: updatedSongs,
      message: "success",
    });
  } catch (error: any) {
    console.error("扫描音乐目录失败:", error);
    // 修改为RESTful格式
    res.status(500).json({
      code: 500,
      data: null,
      message: "读取音乐文件失败",
    });
  }
});

// // 修复类型定义并添加路径参数类型
// app.get("/api/lyrics/:id", async (req: any, res: any) => {
//   try {
//     const songId = req.params.id;
//     const song = allSongs.find((s) => s.id === songId);

//     if (!song) {
//       return res.status(404).json({
//         code: 404,
//         data: null,
//         message: "歌曲未找到",
//       });
//     }


//     // 直接使用扫描阶段存储的歌词路径
//     if (!song.lyrics) {
//       return res.status(404).json({
//         code: 404,
//         data: null,
//         message: "该歌曲没有歌词",
//       });
//     }

//     if (!fs.existsSync(song.lyrics)) {
//       return res.status(404).json({
//         code: 404,
//         data: null,
//         message: `歌词文件不存在: ${path.basename(song.lyrics)}`,
//       });
//     }

//     const lyrics = await parseKrcFile(song.lyrics);
//     res.json({
//       code: 200,
//       data: lyrics,
//       message: "success",
//     });
//   } catch (error) {
//     console.error("获取歌词失败:", error);
//     // 修改为RESTful格式
//     res.status(500).json({
//       code: 500,
//       data: null,
//       message: "获取歌词失败",
//     });
//   }
// });

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`服务器运行在 http://localhost:${PORT}`);
});
